// +FHDR----------------------------------------------------------
// Copyright (c) 2023, RJMicro Technology Co.,Ltd.
// RJMicro Confidential Proprietary
// ---------------------------------------------------------------
// FILE NAME       : .v
// DEPARTMENT      : IC Dept
// AUTHOR          :
// AUTHOR'S EMAIL  :
// ---------------------------------------------------------------
//
// Description     :
// 12'h000  CREL
// 12'h004  ENDN
// 12'h00C  DBTP
// 12'h010  TEST
// 12'h014  RWD
// 12'h018  CCCR
// 12'h01C  NBTP
// 12'h020  TSCC
// 12'h024  TSCV
// 12'h028  TOCC
// 12'h02C  TOCV
// 12'h040  ECR
// 12'h044  PSR
// 12'h048  TDCR
// 12'h050  IR
// 12'h054  IE
// 12'h058  ILS
// 12'h05C  ILE
// 12'h080  GFC
// 12'h084  SIDFC
// 12'h088  XIDFC
// 12'h090  XIDAM
// 12'h094  HPMS
// 12'h098  NDAT1
// 12'h09C  NDAT2
// 12'h0A0  RXF0C
// 12'h0A4  RXF0S
// 12'h0A8  RXF0A
// 12'h0AC  RXBC
// 12'h0B0  RXF1C
// 12'h0B4  RXF1S
// 12'h0B8  RXF1A
// 12'h0BC  RXESC
// 12'h0C0  TXBC
// 12'h0C4  TXFQS
// 12'h0C8  TXESC
// 12'h0CC  TXBRP
// 12'h0D0  TXBAR
// 12'h0D4  TXBCR
// 12'h0D8  TXBTO
// 12'h0DC  TXBCF
// 12'h0E0  TXBTIE
// 12'h0E4  TXBCIE
// 12'h0F0  TXEFC
// 12'h0F4  TXEFS
// 12'h0F8  TXEFA
// -FHDR
// ---------------------------------------------------------------

module can_regfile (
    input                  pclk                ,
    input                  prstn               ,

    input                  psel                ,
    input  [11:0]          paddr               ,
    input                  penable             ,
    input                  pwrite              ,
    input  [31:0]          pwdata              ,
//    output                pready              ,
//    output                pslverr             ,
    output [31:0]          prdata
);

// ------------------------------------------------------------
// APB write read enable
// ------------------------------------------------------------
reg     [31:0]  ff_rdata;
wire            read_en   = psel && (~penable) && (~pwrite);
wire            write_en  = psel && (~penable) && pwrite;
wire    [11:0]  addr      = paddr;
wire    [31:0]  wdata     = pwdata;

always @(posedge pclk or negedge prst) begin
    if (!prst)
        prdata <= 32'b0;
    else if (read_en) 
        prdata <= ff_rdata[31:0];
end

// ------------------------------------------------------------
// Internal Signals
// ------------------------------------------------------------


// ------------------------------------------------------------
// write_process
// ------------------------------------------------------------


// ------------------------------------------------------------
// read_process
// ------------------------------------------------------------


always @ (*) begin
    ff_rdata = 32'h0;
    if (read_en) begin
        case (addr[11:2])
            default: ff_rdata = 32'h0;
        endcase
    end
end
// ------------------------------------------------------------
// Assign
// ------------------------------------------------------------
// ------------------------------------------------------------
// End of the module
// ------------------------------------------------------------
endmodule
